﻿# define _CRT_SECURE_NO_WARNINGS 1
//实现一个函数is_prime，判断一个数是不是素数。
//
//利用上面实现的is_prime函数，打印100到200之间的素数
//#include <stdio.h>
//#include <stdbool.h>
//bool is_prime(int n)
//{
//	if (n < 2)
//	{
//		return false;
//	}
//	for (int i = 2; i * i <= n; i++)
//	{
//		if (n % i == 0)
//		{
//			return false;
//		}
//	}
//}
//int main()
//{
//	for (int i = 1; i <= 200; i++)
//	{
//		if (is_prime(i))
//		{
//			printf("%d ", i);
//		}
//	}
//	return 0;
//}
//实现一个函数，打印乘法口诀表，口诀表的行数和列数自己指定
//
//如：输入9，输出9 * 9口诀表，输出12，输出12 * 12的乘法口诀表。
//#include <stdio.h>
//chengfakoujue(int n)
//{
//	for (int i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <= i; j++)
//		{
//			printf("%d * %d = %d ", i, j, i * j);
//		}
//		printf("\n");
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	chengfakoujue(n);
//	return 0;
//}
//程序填空一
//功能：输入圆的半径 r 和运算标志符 m ，按照运算标志，当输入标志为 'a' 时，计算圆的面积，当输入标志为 'b' 时，计算圆的周长，当输入标志为 'c' 时，计算。
//请在程序的下画线处填入正确的内容，并把下画线删除，使程序得出正确计算。
//注意：不要增行或删行，也不得更改程序结构。
//
//c

//#include <stdio.h>
//#define PI 3.14159F
//int main()
//{
//    float r, s, c;
//    char m;
//    printf("\n请输入圆的半径r和运算标志字符a、b或c:\n");
//    /***************FILL******************/
//    scanf("%f, %c", &r, &m);
//    /***************FILL******************/
//    if (m == 'a')
//    {
//        s = PI * r * r;
//        printf("area is %7.2f\n", s);
//    }
//    /***************FILL******************/
//    if (m == 'b')
//    {
//        c = 2 * PI * r;
//        printf("circle is %7.2f\n", c);
//    }
//    /***************FILL******************/
//    if (m == 'c')
//    {
//        s = PI * r * r;
//        c = 2 * PI * r;
//        printf("area && circle are %7.2f && %7.2f\n", s, c);
//    }
//    return 0;
//}
//创建一个整形数组，完成对数组的操作
//
//实现函数init() 初始化数组为全0
//实现print()  打印数组的每个元素
//实现reverse()  函数完成数组元素的逆置。
//要求：自己设计以上函数的参数，返回值。
//#include <stdio.h>
//void print(int arr[])
//{
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//void reverse(int arr[],int sz)
//{
//	int left = 0;
//	int right = sz - 1;
//	while (left < right)
//	{
//		int temp = arr[left];
//		arr[left] = arr[right];
//		arr[right] = temp;
//		left++;
//		right--;
//	}
//  }
//void init(int arr[])
//{
//	for (int i = 0; i < 10; i++)
//	{
//		arr[i] = 0;
//	}
//}
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof arr / sizeof arr[0] ;
//	print(arr);
//	reverse(arr,sz);
//	print(arr);
//	init(arr);
//	print(arr);
//	return 0;
//}
//写一个二分查找函数
//
//功能：在一个升序数组中查找指定的数值，找到了就返回下标，找不到就返回 - 1
//int bin_search(int arr[], int left, int right, int key)
// arr 是查找的数组
//left 数组的左下标
//right 数组的右下标
//key 要查找的数字
#include <stdio.h>
int bin_search(int arr[], int left, int right, int key)
{
	while (left <= right)
	{
		int mid = (right + left) / 2;
		if (arr[mid] == key)
		{
			return mid;
		}
		else if (arr[mid] < key)
		{
			left = mid + 1;
		}
		else
		{
			right = mid - 1;
		}
	}
	return -1;
}

int main()
{
	int arr[10] = { 1,3,5,7,9,11,13,15,17,19 };
	int left = 0;
	int key = 0;
	scanf("%d", &key);
	int right = sizeof(arr) / sizeof(arr[0]);
	int c = bin_search(arr, left, right,  key);
	printf("%d",c);
	return 0;
}